﻿/***************************************************************
*       
* add by OceanHo 2015/8/26 11:43:22
*
****************************************************************/

using oceanho.webapi.factory.httpCore;
using oceanho.webapi.factory.httpCore.ReqKernal;
using System;
using System.Collections.Generic;
using System.Text;

namespace oceanho.webapi.factory.httpEntity
{
    /// <summary>
    /// 定义一个 http_service_module 管理的参数配置类
    /// </summary>
    public class AppCfg
    {
        /// <summary>
        /// http_service_module 管理的参数配置类
        /// </summary>
        public AppCfg()
        {
            this.Allow_Warn_Count = SecurityCfgDefault.Allow_Warn_Count;
            this.Allow_Max_Connect = SecurityCfgDefault.Allow_Max_Connect;
            this.Allow_Req_Quantity = SecurityCfgDefault.Allow_Req_Quantity;
            this.Allow_ClearIsBadIP_Wait_Minutes = SecurityCfgDefault.Allow_ClearIsBadIP_Wait_Minutes;
        }

        /// <summary>
        /// 获取或者设置一个值，该值表示实现了IReqCacheDb接口的任意可以对请求的ReqCache管理对象
        /// </summary>
        public IReqCacheDb ReqCacheDb { get; set; }

        /// <summary>
        /// 获取或者设置一个值，该值表示允许客户端最大拉黑后自动解除的次数限制
        /// </summary>
        public uint Allow_Warn_Count { get; set; }
        /// <summary>
        /// 获取或者设置一个值，该值表示允许客户端的最大挂起请求数量限制
        /// </summary>
        public uint Allow_Max_Connect { get; set; }

        /// <summary>
        /// 或者或者设置一个值，该值表示允许客户端在统计范围内向服务器发起的最大请求次数限制
        /// </summary>
        public uint Allow_Req_Quantity { get; set; }

        /// <summary>
        /// 获取或者设置一个值，该值表示刷新ReqCacheDb中某个ReqCache.IsBadIP标识可以被重置的有效等待分钟数（单位：分钟）
        /// </summary>
        public int Allow_ClearIsBadIP_Wait_Minutes { get; set; }
    }
}
